package com.ksd.pug.service.user;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ksd.pug.pojo.Permission;
import com.ksd.pug.pojo.SysLoginUser;
import com.ksd.pug.pojo.SysRole;
import com.ksd.pug.vo.RoleUserVo;
import com.ksd.pug.vo.TreeVo;
import com.ksd.pug.vo.user.UserVo;

import java.util.List;

/**
 * @author: hcl
 * @date: 2022/1/24 15:06
 * @Description:
 */
public interface ISysLoginUserService extends IService<SysLoginUser> {


    /**
     * 根据用户手机号码查询用户
     * @param phone
     * @return
     */
    SysLoginUser getByPhone(String phone);

    /**
     * 根据用户名查询用户
     * @param username
     * @return
     */
    SysLoginUser getByUsername(String username);

    /**
     * 查询用户表信息并分页
     *
     * @return
     */
    IPage<SysLoginUser> findUserPage(UserVo userVo);

    /**
     * 保存和修改用户
     *
     * @param sysLoginUser
     */
    SysLoginUser saveUpdateUser(SysLoginUser sysLoginUser);


    /**
     * 根据用户id删除用户
     *
     * @param id
     * @return
     */
    boolean delUser(Long id);

    /**
     * 根据用户ids删除用户
     *
     * @param ids
     * @return
     */
    boolean delBatchUser(String ids);

    /**
     * 根据用户id查询用户
     *
     * @param id
     * @return
     */
    SysLoginUser getUser(Long id);
    

    /**
     * 根据用户查询对应的角色
     * @param userid
     * @return
     */
    List<SysRole> findSysRoleByUserId(Long userid);

    /**
     * 查询用户对应的权限
     * @param userid
     * @return
     */
    List<Permission> findBySysPermissionUserId(Long userid);

    /**
     * 多表关联查询
     * @param pageNo
     * @param pageSize
     * @return
     */
    IPage<SysLoginUser> findLoginUserPage(int pageNo, int pageSize);

    /**
     * 查询用户对应的权限 树形
     * @param userid
     * @return
     */
    List<TreeVo> getTreeList(Long userid);

    //根据角色名称 保存 用户 对应的 角色
    boolean saveUserRole(RoleUserVo roleUserVo);
}
